perm filename INTFAC.FAI[SYS,HE]12 blob
sn#092649 filedate 1974-05-10 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00008 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE INTFAC
C00004 00003 THIS IS THE 32 WORD MAIL MESSAGE
C00005 00004 PACK: (INTEGER PTR,TIMEREFERENCE REAL SOLN)
C00007 00005 ISSERV: 0
C00009 00006 RSS: SKIPN WFSF
C00010 00007 DOIT: MOVE 1,-1(17)
C00011 00008 ACT: HRLI MASTER
C00012 ENDMK
C⊗;
TITLE INTFAC
INTERNAL DOIT,ARMPOS,ARM.JOINT,PACK,PSTRING
INTERNAL HANDFN,ARMFN,ARMPROCEED
EXTERNAL ARM.VECTOR,ARM.MOTION,ARM.STATUS,ARM.SEG
EXTERNAL ARM.WAIT,FELT,STOP.ON,TRANS_ARM
EXTERNAL ARM.MESSAGE,JOBREN,JOBSA
BLUE←←0
P←17
MASTER←←16661
IFN BLUE,<MASTER←←MASTER+1>
RELOC←←40
TOUCH←←10
HOLD←←20
ARM.JOINT:MOVEI
SKIPA
ARMPOS: MOVEI 1
ONCE: HRRZ 1,JOBREN
HRRM 1,REST
CALLI 1,30
MOVEM 1,THISJOB
CALLI 1,24
MOVE 3,[POINT 6,0,35]
MOVE 4,[POINT 7,MYPPN-1,35]
MOVEI 7,1
I5: MOVEI 5,2
C7: ILDB 6,3
ADDI 6,40
CAIE 6,40
IDPB 6,4
SOJGE 5,C7
SOJGE 7,[MOVEI 6,"/"
IDPB 6,4
JRST I5]
MOVEI 6,15
IDPB 6,4
MOVEI 6,12
IDPB 6,4
MOVE 1,[JRST ACTIT]
MOVEM 1,ONCE
ACTIT: MOVEI 1,RSS
HRRM 1,JOBREN
MOVE 1,-1(P)
MOVEM 1,SAVE.STRING
PUSHJ P,ACT
MOVE 1,TRANS.ARM
MOVEI 2,=11(1)
HRLI 1,STRING+1
BLT 1,(2)
SUB P,[XWD 2,2]
JRST @2(P)
REQU:
IFE BLUE,<SIXBIT/ARM-Y/>
IFN BLUE,<SIXBIT/ARM-B/>
EXE
MYPPN: 0
0
THISJOB:0
; THIS IS THE 32 WORD MAIL MESSAGE
EXE: XWD MASTER,0 ;18-27 NARGS, 30 RELOC, 31 HOLD, 32 SOTCH, 33-35 EXE
;0 READ IN OCTAL
;1 READ IN DECIMAL
;2 EXECUTE FILE
;3 EXECUTE FUNCTION
FILE: 0
PPPN: 0
BAND: 0
SEGJOB: 0
NAME: 0
STATUS: 0
SEGMENT:0
NERVES: 0
ETOR: 0
THETA: 0
ARGS: BLOCK =6
STRING: BLOCK =14
SAVE.STRING:0
JUNK: BLOCK =32
PACK: ;(INTEGER PTR,TIME;REFERENCE REAL SOLN);
MOVE 10,-3(P)
MOVE 1,-2(P)
MOVEM 1,(10) ;TIME
HRLZ 5,-1(P)
BLT 5,4 ;PICK UP A0-A4
MOVM 6,4 ;WHERE THE LARGEST WILL END UP
MOVEI 5,3
L1: MOVM 7,(5)
CAMGE 6,7
MOVE 6,7
SOJGE 5,L1
TDZ 6,[XWD 777,777777] ;THE LARGEST IS NOW IN 6
ADD 6,[XWD 12000,0] ;THE EXPONENT TO PUT FRACTION AND SIGN INTO RT. HALF
HLLM 6,-1(10)
UFA 6,4
HRLM 7,-3(10)
UFA 6,3
HRRM 7,-3(10)
UFA 6,2
HRLM 7,-2(10)
UFA 6,1
HRRM 7,-2(10)
UFA 6,0
HRRM 7,-1(10)
SUB P,[XWD 4,4]
JRST @4(P)
PSTRING: ;(PTR,S)
MOVE 1,[POINT 7,0,35]
HRR 1,-1(P) ;POINTS TO LOC IN COEFF
POP 16,3 ;COUNT
POP 16,2 ;STRING POINTER
HRLI 2,0 ;CLEAR LH OF COUNT
JUMPE 2,[
SETZ 1,
JRST PLB]
PL: ILDB 4,3
IDPB 4,1
SOJG 2,PL
MOVEI 4,0
IDPB 4,1
HRLI 1,0 ;LAST WORD
HRRZ 2,-1(P) ;FIRST WORD
SUBI 1,(2)
PLB: HRRZ 2,-1(P)
MOVEM 1,(2) ;WORD COUNT
SUB P,[XWD 2,2]
JRST @2(P)
ISSERV: 0
SEE: MOVE 1,REQU
CALLI 1,400043
JRST[ CAIE 1,1
JRST[OUTSTR[ASCIZ/THERE ARE TOO MANY SERVOS ALREADY
PLEASE KILL THEM ALL BUT ONE AND TYPE RETURN
/]
INCHWL
INCHWL
JRST SEE]
PTYGET 10
JRST[ OUTSTR[ASCIZ/NO PTYS AVAILABLE
/]
CALLI 12]
HRLI 10,0
MOVEM 10,PTYLIN
GJ: MOVEI 11,[ASCIZ/L
/]
PTWRS7 10
WH: PTRD1W 10
CAIE 11,"#"
JRST[ CAIE 11,"?"
JRST WH
OUTSTR[ASCIZ\NO JOB FOR SERVO
TYPE C/R TO TRY AGAIN
\]
INCHWL
INCHWL
JRST GJ]
MOVEI 11,MYPPN
PTWRS7 10
WCC: PTRD1W 10
CAIE 11,"↑"
JRST WCC
IFE BLUE,<
MOVEI 11,[ASCIZ/R YELO
/]
>
IFN BLUE,<
MOVEI 11,[ASCIZ/R BLU
/]
>
PTWRS7 10
WCC2: PTRD1W 10
CAIE 11,"!"
JRST WCC2
JRST @ISSERV]
GOTONE: JRST @ISSERV
PTYLIN: 0
RSS: SKIPN WFSF
REST: JRST .
SETZM WFSF
SKIPN 10,PTYLIN
POPJ P,
RSS1: PTRD1S 10
JRST [ MOVEI 11,[XWD 600600,0]
PTWRS9 10
RSS3: PTRD1W 10
CAIE 11,"."
JRST RSS3
IFE BLUE,<
MOVEI 11,[ASCIZ/R YELO
/]
>
IFN BLUE,<
MOVEI 11,[ASCIZ/R BLU
/]
>
PTWRS7 10
RSS2: PTRD1W 10
CAIE 11,"!"
JRST RSS2
POPJ P,]
TTYUUO 1,11
JRST RSS1
WFSF: 0
SAVE: 0
DOIT: MOVE 1,-1(17)
MOVEM 1,FILE
MOVEM 1,ARM.WAIT
MOVE 1,-2(17)
HRRZM 1,BAND
MOVEI 2
MOVE 1,-3(P)
JUMPN 1,.+2 ;DOES HE HAVE A DSKPPN?
CALLI 1,400071 ;NO GET MINE
MOVEM 1,PPPN
PUSHJ P,ACT
RETM: SUB 17,[XWD 4,4]
JRST @4(17)
ARMFN: MOVEI 3+HOLD+RELOC
HRL 1,ARM.ME
HRRI 1,ARGS
BLT 1,ARGS+24
MOVE 1,-1(17)
DPB 1,[POINT 9,0,26]
PUSHJ P,ACT
SUB P,[XWD 2,2]
JRST @2(P)
HANDFN: MOVEI 3+HOLD
MOVE 1,ARM.ME
MOVE 1,(1)
MOVEM 1,ARGS
JRST ACT
ARMPRO: MOVE 1,-1(P)
MOVEM 1,ARGS
MOVEI 3
PUSHJ P,ACT
SUB P,[XWD 2,2]
JRST @2(P)
ACT: HRLI MASTER
SETZM ARM.STATUS
SKIPE STOP.ON
TRO TOUCH
MOVEM EXE
MOVE 1,THISJOB
MOVEM 1,SEGJOB
MOVE 1,ARM.WAIT
MOVEM 1,ARM.MOTION
SETZM ARM.WAIT
JSR ISSERV
CL: SRCV JUNK
JRST SSF
JRST CL
SSF: SETOM WFSF
SEND REQU
JRST[ MOVEI 1,2
CALLI 1,31
JRST .-1]
WFA: WRCV EXE
SETZM WFSF
MOVE 1,ARM.VE
MOVEI 2,6(1)
HRLI 1,THETA
BLT 1,(2)
MOVE 1,ARM.MOTION
MOVEM 1,ARM.WAIT
SETZM ARM.MOTION
MOVE 1,STATUS
MOVEM 1,ARM.STATUS
SKIPE STRING
OUTSTR STRING
POPJ P,
END